home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Programming / AmigaTalk / Intuition / GadgetArray.st < prev    next >
Text File  |  2000-05-02  |  9KB  |  201 lines

  1. "--------------------------------------------------------"
  2. " GadgetArray Class is Amiga composite Gadget assemblies."
  3. " The methods for the Gadget Classes have changed, so    "
  4. " this file needs a lot of re-work!                      "
  5. "--------------------------------------------------------"
  6.  
  7. Class GadgetArray :Array
  8. ! numGadgets arrayName !
  9. [
  10.    readInGadgetArray: fileName number: howMany
  11.       ! index tempGadget gt ng le te w h fl act theFile iName ! 
  12.  
  13.       theFile <- File new.
  14.       theFile stringMode.
  15.       theFile open: fileName for: 'r'.
  16.  
  17.       index <- 1.
  18.       [index <= howMany]
  19.          whileTrue: [iName <- (arrayName,index).
  20.                      ng  <- (theFile read).
  21.                      le  <- ((theFile read) asInteger).
  22.                      te  <- ((theFile read) asInteger).
  23.                      w   <- ((theFile read) asInteger).
  24.                      h   <- ((theFile read) asInteger).
  25.                      fl  <- ((theFile read) asInteger).
  26.                      act <- ((theFile read) asInteger).
  27.                      gt  <- ((theFile read) asInteger).
  28.  
  29.                      ((gt bitAnd: 16rF) == 4)  "a StrGadget:" 
  30.                         ifTrue: [tempGadget <- StrGadget new].
  31.  
  32.                      ((gt bitAnd: 16rF) == 3)  "a PropGadget:" 
  33.                         ifTrue:  [tempGadget <- PropGadget new]
  34.                         ifFalse: [tempGadget <- BoolGadget new].
  35.                         
  36.                      tempGadget setNextGadgetName: iName to: ng.
  37.                      tempGadget setLeftEdge:       iName to: le.
  38.                      tempGadget setTopEdge:        iName to: te.
  39.                      tempGadget setWidth:          iName to: w.
  40.                      tempGadget setHeight:         iName to: h.
  41.                      tempGadget setFlags:          iName to: fl.
  42.                      tempGadget setActivation:     iName to: act.
  43.                      tempGadget setGadgetType:     iName to: gt.
  44.  
  45.                      tempGadget setRenderName: iName to: (theFile read).
  46.                      tempGadget setSelectName: iName to: (theFile read).
  47.                      tempGadget  setITextName: iName to: (theFile read).
  48.                      tempGadget   setGadgetID: iName 
  49.                                            to: ((theFile read) asInteger).
  50.  
  51.                      ((gt bitAnd: 16rF) == 4) "a StrGadget:" 
  52.                         ifTrue: [tempGadget changeBufferSize: iName
  53.                                         toSize: ((theFile read) asInteger)
  54.                                 ].
  55.  
  56.                      ((gt bitAnd: 16rF) == 3) "a PropGadget:" 
  57.                         ifTrue: [:f :h :v :hb :vb |
  58.                                  f  <- ((theFile read) asInteger).
  59.                                  h  <- ((theFile read) asInteger).
  60.                                  v  <- ((theFile read) asInteger).
  61.                                  hb <- ((theFile read) asInteger).
  62.                                  vb <- ((theFile read) asInteger).
  63.                                  tempGadget setProps: iName
  64.                                                flags: f
  65.                                                 hPot: h  vPot: v
  66.                                                hBody: hb vBody: vb
  67.                                 ].
  68.                      index <- index + 1
  69.                     ].    
  70.       ^ numGadgets <- index
  71. |
  72.    writeOutGadgetArray: fileName number: howMany
  73.       ! index gType theFile gadg iName !
  74.  
  75.       theFile <- File new.
  76.       theFile stringMode.
  77.       theFile open: fileName for: 'w'.
  78.  
  79.       index <- 1.
  80.       [index <= howMany]
  81.          whileTrue: [iName <- (arrayName,index).
  82.                      gadg  <- Gadget new.
  83.                      gType <- (gadg gadgetTypeIs: iName).
  84.  
  85.                      ((gType bitAnd: 16rF) == 1)
  86.                         ifTrue: [gadg <- BoolGadget new].
  87.                         
  88.                      ((gType bitAnd: 16rF) == 4)
  89.                         ifTrue:  [gadg <- StrGadget new]
  90.                         ifFalse: [gadg <- PropGadget new].
  91.                         
  92.                      theFile write: (gadg getNextGadgetName: iName).
  93.                      theFile write: (gadg getLeftEdge: iName).
  94.                      theFile write: (gadg getTopEdge: iName).
  95.                      theFile write: (gadg getWidth: iName).
  96.                      theFile write: (gadg getHeight: iName).
  97.                      theFile write: (gadg getFlags: iName).
  98.                      theFile write: (gadg getActivation: iName).
  99.                      theFile write: (gadg getGadgetType: iName).
  100.                      theFile write: (gadg getRenderName: iName).
  101.                      theFile write: (gadg getSelectName: iName).
  102.                      theFile write: (gadg getITextName:  iName).
  103.                      theFile write: (gadg getGadgetID:   iName).
  104.  
  105.                      ((gType bitAnd: 16rF) == 4) "a StrGadget:" 
  106.                         ifTrue: [theFile write: (gadg getBufferSize: iName)].
  107.  
  108.                      ((gType bitAnd: 16rF) == 3) "a PropGadget:" 
  109.                         ifTrue: [theFile write: (gadg getPropFlags: iName).
  110.                                  theFile write: (gadg getHPot:      iName).
  111.                                  theFile write: (gadg getVPot:      iName).
  112.                                  theFile write: (gadg getHBody:     iName).
  113.                                  theFile write: (gadg getVBody:     iName)
  114.                                 ].
  115.                      index <- index + 1
  116.                     ].    
  117.       ^ numGadgets <- index
  118. |
  119.    makeGadgetArray: howMany
  120.       ! index tempGadget nextName render !
  121.  
  122.       arrayName <- Array new: howMany.
  123.       render    <- Border new.
  124.       render initialize: (arrayName,'Bdr')
  125.              withArray: #( 0 0 1 0 1 5
  126.                            #(0 0 20 0 20 5 20 0 0 0) 'NULL').
  127.       index <- 1.
  128.       [index <= howMany]
  129.          whileTrue: [tempGadget <- BoolGadget new.
  130.                      (index < howMany)
  131.                         ifTrue:   [nextName <- (arrayName,(index + 1))]
  132.                         ifFlalse: [nextName <- 'NULL'].
  133.                      
  134.                      tempGadget initialize: (arrayName,index) 
  135.                                 withArray: #(nextName (20 * index) 
  136.                                              (5 * index) 20 5 0 1 1 
  137.                                              render render 'NULL' index).
  138.                      index <- index + 1
  139.                     ].
  140.       ^ numGadgets <- howMany
  141. |
  142.    registerAll: howMany to: windowTitle
  143.       ! index iName tempGadget gType !
  144.       
  145.       index <- 1.
  146.       [index <= howMany]
  147.          whileTrue: [iName <- (arrayName,index).
  148.                      tempGadget <- Gadget new.
  149.                      gType      <- (tempGadget gadgetTypeIs: iName).
  150.  
  151.                      ((gType bitAnd: 16rF) == 1)
  152.                         ifTrue: [tempGadget <- BoolGadget new].
  153.  
  154.                      ((gType bitAnd: 16rF) == 4)
  155.                         ifTrue:  [tempGadget <- StrGadget  new]
  156.                         ifFalse: [tempGadget <- PropGadget new].
  157.  
  158.                      tempGadget register: iName for: windowTitle.
  159.                      index <- index + 1
  160.                     ].
  161.       ^ numGadgets <- index
  162. |
  163.    moveGadgetArrayTo: newPoint
  164.       ! dx dy index tGadg gType iName !
  165.       
  166.       dx    <- newPoint x.
  167.       dy    <- newPoint y.
  168.       tGadg <- Gadget new.
  169.       index <- 1.
  170.       iName <- (arrayName,index).
  171.       gType <- tGadg gadgetTypeIs: iName.
  172.  
  173.       ((gType bitAnd: 16rF) == 1)
  174.          ifTrue: [tGadg <- BoolGadget new].
  175.  
  176.       ((gType bitAnd: 16rF) == 4)
  177.          ifTrue:  [tGadg <- StrGadget new]
  178.          ifFalse: [tGadg <- PropGadget new].
  179.          
  180.       [(tGadg getGadgetID: iName) notNil]
  181.          whileTrue: [tGadg setStartPoint: iName
  182.                                        x: (tGadg getLeftEdge: iName + dx)
  183.                                        y: (tGadg getTopEdge:  iName + dy).
  184.                      index <- index + 1.
  185.                      iName <- (arrayName,index).
  186.                      gType <- tGadg getGadgetType: iName.
  187.                      ((gType bitAnd: 16rF) == 1)
  188.                         ifTrue: [tGadg <- BoolGadget new].
  189.  
  190.                      ((gType bitAnd: 16rF) == 4)
  191.                         ifTrue:  [tGadg <- StrGadget new]
  192.                         ifFalse: [tGadg <- PropGadget new].
  193.                     ].
  194.       ^ numGadgets <- index
  195. |
  196.   new: newArrayName
  197.       arrayName  <- newArrayName.
  198.       numGadgets <- 0.
  199.       ^ self
  200. ]
  201.